package com.atguigu1.core.action

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 *
 * @description: 行动算子案例
 * @time: 2021-03-12 11:45
 * @author: baojinlong
 **/
object Spark02ReduceAction {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("rdd")
    // 设置rdd分区数字
    val sparkContext = new SparkContext(conf)
    val rdd: RDD[Int] = sparkContext.makeRDD(Seq(9, 10, 2, 100, 1, 2, 3, 4))
    println(rdd.reduce(_ + _))
    // 将不同分区的数据按照分区顺序采集到Driver端内存中,形成数组
    val collectResult: Array[Int] = rdd.collect
    println(collectResult.mkString(","))
    // 统计数据源中个数
    println(rdd.count)
    // 获取数据源中第一个
    println(rdd.first)
    // 获取n个数据
    println(rdd.take(5).mkString(","))
    // 数据排序后取N个数据
    println(rdd.takeOrdered(3)(Ordering.Int.reverse).mkString(","))

    sparkContext.stop()
  }
}
